@苏苏
4年前 提问
1个回答

WAF 是如何被绕过的

X0_0X
4年前

想知道怎么绕过WAF就要先知道什么是WAF吧,WAF就是Web应用防火墙,Web Application Firewall的简称。WAF虽强但不是无懈可击的,作为攻击者,我们要清楚我们利用哪方面来进行绕过,无非就是Web容器的特性、Web应用层的问题、WAF自身的问题、数据库的一些特性这个几个点。我这里就不具体介绍过程了,给你介绍几个思路你去试一下,第一可以从数据提取方式存在缺陷,某些WAF从数据包中提取检测特征的方式存在缺陷,如正则表达式不完善,某些攻击数据因为某些干扰字符的存在而无法被提取。第二就是从数据清洗方式不正确,当攻击者提交的参数值中存在大量干扰数据时,如大量空格、TAB、 换行、%0C、 注释等,WAF需要对其进行清洗,但是,如果清洗方式不正确,会导致真正的攻击部分被清洗,然后拿去检测的是不含有攻击向量的数据,从而被绕过。最后就是从规则通用性问题入手,比如对SQL注入数据进行清洗时,WAF一般不能知道后端数据库是MySQL还是SQL Server,那么对于MySQL 的!50001Select来说,这是一个Select的命令,而对于SQL Server来说,这只不过是一个注释而已,注释 的内容为50001Select。尤其是对于通用性WAF,这一点相当难做,很难去处理不同数据库的特性之间的问题。基本从这三个思路入手通用性WAF绕过难度不是很大,但是要是专杀WAF那可能会有点难度但是也不是不能绕过,就看你想不想细细琢磨。

研究WAF的绕过手段,是为了更好的提升WAF的防御能力。而不是为了进行攻击,这里说几种防止绕过的几种办法,第一种就是Baypass waf这个还是很常用的具体去百度一下。第二种技术就是Defense,这里常用的是Type绕过防御机制,其他的还有很多也可以去研究一下。